Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Concrete-rebar bondslip constraint model #100

Open
wants to merge 6 commits into
base: devel
Choose a base branch
from

Conversation

SudiptaBiswas
Copy link
Collaborator

Addresses #99

Please take a look @bwspenc

}
};

// Bond-slip data
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need doxygen comments for all descriptions of non-override methods and for all member variables. Three slash comments for the variables, long form comments for methods, including @param and @return tags.

RebarBondSlipConstraint::computeQpOffDiagJacobian(Moose::ConstraintJacobianType /*type*/,
unsigned int /*jvar*/)
{
return 0.0;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's going to be important to implement this for anything off-axis.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

By this I mean that if the bar is oriented in a direction off the Cartesian axes, this will be nonzero. You can ignore this for the first cut, but this will be very important to get right.

void
RebarBondSlipConstraint::computeTangent()
{
_slave_tangent *= 0.0;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be set = 0?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess that is what this accomplishes. It just looks strange. I'd replace it with an =

}

_slave_tangent /= _slave_tangent.norm();
_current_elem_volume /= elems.size();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lines 156 and 271 don't seem consistent.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What would be a better way to get the element length/volume?

{
case Moose::SlaveSlave:
return _phi_slave[_j][_qp] * _penalty * _test_slave[_i][_qp] *
(1.0 - _slave_tangent(_component) * _slave_tangent(_component));
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are all computed assuming that there is a penalty stiffness in the axial and perpendicular directions, which isn't the case anymore with the bond slip model. You would need to apply the penalty stiffness in the perpendicular directions, but subtract that off in the axial direction and replace it with the tangent from the bond slip model. We do that kind of thing in contact in the MechanicalContactConstraint class. Same idea here. I imagine this is the main source of the convergence trouble.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was just thinking -- there's a newly introduced Constraint in tensor_mechanics that Swetha wrote that does something very similar to this Constraint: NodalFrictionalConstraint. It represents a frictional slider that uses a penalty constraint until it slips. I just looked at the code for the Jacobian in that class. It computes the nonlinear Jacobian, but it doesn't have any of the code I was expecting to see to deal with the directionality of the Jacobian. That's because the NodalFrictionalConstraint class is only applied to the dof in the axial direction of the beam, and it assumes that the beam is aligned in one of the Cartesian directions. Another separate Constraint (NodalStickConstraint) deals with tying it in the other two directions. Your constraint is dealing with all directions (which is probably preferable).

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The bondslip contribution towards the residual is constant. So I only considered the penalty contributions towards jacobian calculation. I believe I am using the normal direction to assign the contribution. If the truss member is inclined, only then the penalty would apply to both x- and y- directions.

@SudiptaBiswas SudiptaBiswas force-pushed the rebar_bondslip branch 2 times, most recently from 69d0f8d to 668ec77 Compare August 19, 2020 15:00
@SudiptaBiswas SudiptaBiswas changed the title WIP: Concrete-rebar bondslip constraint model Concrete-rebar bondslip constraint model Aug 19, 2020
@SudiptaBiswas
Copy link
Collaborator Author

This is ready for another review @bwspenc

@SudiptaBiswas SudiptaBiswas force-pushed the rebar_bondslip branch 2 times, most recently from 64be4f9 to 79b928f Compare October 5, 2020 22:52
@moosebuild
Copy link

Job Precheck on 79b928f wanted to post the following:

Warning: This PR changes repo size by 6.92 MiB.

@moosebuild
Copy link

moosebuild commented Oct 5, 2020

Job Test on 97192a8 wanted to post the following:

View the site here

This comment will be updated on new commits.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants